package com.go.where.family.api.utils;

import java.util.Iterator;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.go.where.family.api.vo.WeichatVo;

public class ParseWeichatXml {

	private static Logger log = Logger.getLogger(ParseWeichatXml.class);

	@SuppressWarnings("unchecked")
	public static WeichatVo parse(String xml) {
		WeichatVo resInfo = null;
		Document document = null;
		Element root = null;
		// 读取XML文件,获得document对象
		try {
			document = DocumentHelper.parseText(xml);
			root = document.getRootElement();
			Iterator<Element> it = root.elementIterator();
			resInfo = new WeichatVo();
			while (it.hasNext()) {
				Element secondEle = it.next();
				String tagName = secondEle.getName();
				if ("return_code".equalsIgnoreCase(tagName)) {
					resInfo.setReturnCode(secondEle.getTextTrim());
				} else if ("return_msg".equalsIgnoreCase(tagName)) {
					resInfo.setReturnMsg(secondEle.getTextTrim());
				} else if ("appid".equalsIgnoreCase(tagName)) {
					resInfo.setAppid(secondEle.getTextTrim());
				} else if ("mch_id".equalsIgnoreCase(tagName)) {
					resInfo.setMchid(secondEle.getTextTrim());
				} else if ("device_info".equalsIgnoreCase(tagName)) {
					resInfo.setDeviceInfo(secondEle.getTextTrim());
				} else if ("nonce_str".equalsIgnoreCase(tagName)) {
					resInfo.setNonceStr(secondEle.getTextTrim());
				} else if ("sign".equalsIgnoreCase(tagName)) {
					resInfo.setSign(secondEle.getTextTrim());
				} else if ("result_code".equalsIgnoreCase(tagName)) {
					resInfo.setResultCode(secondEle.getTextTrim());
				} else if ("err_code".equalsIgnoreCase(tagName)) {
					resInfo.setErrCode(secondEle.getTextTrim());
				} else if ("err_code_des".equalsIgnoreCase(tagName)) {
					resInfo.setErrCodeDes(secondEle.getTextTrim());
				} else if ("trade_type".equalsIgnoreCase(tagName)) {
					resInfo.setTradeType(secondEle.getTextTrim());
				} else if ("openid".equalsIgnoreCase(tagName)) {
					resInfo.setOpenId(secondEle.getTextTrim());
				} else if ("is_subscribe".equalsIgnoreCase(tagName)) {
					resInfo.setIsSubscribe(secondEle.getTextTrim());
				} else if ("trade_type".equalsIgnoreCase(tagName)) {
					resInfo.setTradeType(secondEle.getTextTrim());
				} else if ("bank_type".equalsIgnoreCase(tagName)) {
					resInfo.setBankType(secondEle.getTextTrim());
				} else if ("total_fee".equalsIgnoreCase(tagName)) {
					resInfo.setTotalFee(secondEle.getTextTrim());
				} else if ("fee_type".equalsIgnoreCase(tagName)) {
					resInfo.setFeeType(secondEle.getTextTrim());
				} else if ("cash_fee".equalsIgnoreCase(tagName)) {
					resInfo.setCashFee(secondEle.getTextTrim());
				} else if ("cash_fee_type".equalsIgnoreCase(tagName)) {
					resInfo.setCashFeeType(secondEle.getTextTrim());
				} else if ("transaction_id".equalsIgnoreCase(tagName)) {
					resInfo.setTransactionId(secondEle.getTextTrim());
				} else if ("out_trade_no".equalsIgnoreCase(tagName)) {
					resInfo.setOutTradeNo(secondEle.getTextTrim());
				} else if ("time_end".equalsIgnoreCase(tagName)) {
					resInfo.setTimeEnd(secondEle.getTextTrim());
				}
			}
		} catch (DocumentException e) {
			log.error("解析微信支付接口返回结果异常", e);
		}
		return resInfo;
	}
}
